#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//int add(int x, int y)
//{
//	int z = 0;
//	z = x + y;
//	return z;
//}
//int add(int x, int y)
//{
//	
//	return x+y;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d",&a,&b);
//	int c = add(a, b);
//	printf("%d",c);
//
//
//	return 0;
//}
//void print(void)
//{
//	printf("hehe\n");
//}
//int main()
//{
//	print();
//
//	return 0;
//}
// void set_arr(int arr[10], int sz)
//{
//	for (int i = 0; i < sz; i++)
//	{
//		arr[i] = -1;
//	}
//}
// void print(int arr[10],int sz)
//{
//	 for (int i = 0; i < sz; i++)
//	 {
//		 printf("%d", arr[i]);
//	 }
// }
// int main()
//{
//	int arr1[10] = { 0 };
//	int sz = sizeof(arr1) / sizeof(arr1[0]);
//	print(arr1, sz);
//	set_arr(arr1, sz);
//	
//		print(arr1,sz);
//	
//
//	return 0;
//}
#include <stdbool.h>
_Bool is_leap_year(int y)
{
	if ((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0))
	{
		return true;
	}
	else
		return false;
}
//int get_days_of_month(int y, int m)
//{
//	int day = 0;
//	int arr1[] = { 1,3,5,7,8,10,12 };
//	
//		if (m == 2)
//		{
//			if ((y % 400 == 0) || (y % 4 == 0) && (y % 100 != 0))
//			{
//				day = 29;
//			}
//			else
//				day = 28;
//		}
//	
//		else if (m == arr1)
//		{
//			day = 31;
//		}
//		else
//		{
//			day = 30;
//		}
//
//	
//
//
//	return day;

	int get_days_of_month(int y, int m)
	{
		int arr1[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };

		int day = arr1[m];
		if ( is_leap_year(y) && m == 2)
		{
			day += 1;
		}
		return day;
	}
int main()
{
	int year = 0;
	int month = 0;
	scanf("%d %d",&year,&month);
	int day = get_days_of_month(year, month);
	printf("%d\n",day);

	return 0;
}